package com.jfinal.ssl.task;

import com.github.benmanes.caffeine.cache.Caffeine;
import com.jfinal.aop.Aop;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.cron4j.ITask;
import com.jfinal.ssl.common.CaffeineKit;
import com.jfinal.ssl.controller.TencentServer;

import java.util.List;

public class DownSSLTask implements ITask {

    public static void main(String[] args) {
        String cachePath = PathKit.getWebRootPath() + "/data/cache/";
        CaffeineKit.setPersistenceBasePath(cachePath);

        // 2. 创建特殊缓存实例（在加载数据前创建）
        CaffeineKit.putCache("cacheData",
                Caffeine.newBuilder()
                        .maximumSize(100000)
                        .build());

        // 3. 最后加载持久化数据（会自动填充已创建的缓存）
        CaffeineKit.loadAllFromDisk();

        List<String> list = CaffeineKit.getKeys("cacheData");
        System.out.println(list);
        TencentServer tencentServer = Aop.get(TencentServer.class);
        for (String string : list) {
            //如果ssl证书已签发，并且成功下载更新，那么移除缓存
            if (tencentServer.detailSSL(string).isOk() && tencentServer.downSSL(string).isOk()) {
                //移除缓存
                CaffeineKit.remove("cacheData", string);
            }
        }
    }

    @Override
    public void run() {
        System.out.println("定时检测是否有证书需要下载");
        //定时检测是否有证书需要下载
        List<String> list = CaffeineKit.getKeys("cacheData");
        TencentServer tencentServer = Aop.get(TencentServer.class);
        for (String string : list) {
            //如果ssl证书已签发，并且成功下载更新，那么移除缓存
            if (tencentServer.detailSSL(string).isOk() && tencentServer.downSSL(string).isOk()) {
                //移除缓存
                CaffeineKit.remove("cacheData", string);
            }
        }
    }

    @Override
    public void stop() {

    }
}
